GDPS-User Manual
V1.0
Software: GNSS Data Preprocessing Software (GDPS)
Developer: Liguo Lu
Address: School of Surveying and Geoinformation Engineering, East China University of
Technology, Nanchang 330013, China
E-mail: lglu66@163.com
April 2024
Content
1 Overview .................................................................................................................... 1
2 Software requirements.............................................................................................. 2
2.1 Environmental requirements ............................................................................. 2
2.2 Software license ................................................................................................ 2
3 Software installation ................................................................................................. 3
4 Software and tools instructions ................................................................................ 5
4.1 Format translation ............................................................................................. 5
4.2 Data editing ....................................................................................................... 6
4.3 Quality checking ............................................................................................... 7
4.4 Auxiliary tools ................................................................................................... 7
5 Software operation .................................................................................................... 9
5.1 Format translation operation ............................................................................. 9
5.2 Data editing operation ....................................................................................... 9
5.3 Quality checking operation ............................................................................... 9
6 Mathematical methods ........................................................................................... 16
6.1 Pseudorange gross error detection .................................................................. 16
6.2 Cycle slip detection ......................................................................................... 16
6.2.1 MW combination .................................................................................. 16
6.2.2 GF combination .................................................................................... 17
6.3 Clock jump detection and repair ..................................................................... 17
6.4 Data integrity rate ........................................................................................... 18
6.5 Data saturation rate ......................................................................................... 18
6.6 Pseudorange multipath .................................................................................... 18
6.7 Carrier phase multipath ................................................................................... 19
6.8 Ionospheric delay rate ..................................................................................... 19
6.9 Carrier-to-noise ratio ....................................................................................... 19
6.10 Pseudorange observation noise ..................................................................... 19
6.11 Carrier phase observation noise .................................................................... 19
6.12 Dilution of precision ..................................................................................... 20
Acknowledgement ...................................................................................................... 21
1
1 Overview
With the rapid development of multi-frequency and multi-system GNSS, users can access a
wealth of observation data from navigation systems like BeiDou Satellite Navigation System (BDS),
Global Positioning System (GPS), Global Navigation Satellite System (GLONASS), and Galileo
satellite navigation system (Galileo), etc. However, the quality of these original GNSS observations
is easily affected by signal availability, transmission errors, multipath, and receiver performance.
GNSS data preprocessing is a prerequisite for high-precision GNSS navigation, positioning, and
orbit determination applications. While commercial software toolboxes are available, these existing
preprocessing tools are not user-friendly enough to handle multi-frequency and multi-system GNSS
data due to extra costs, strong professionalism, and complex operations. Therefore, we propose an
open-source GNSS data preprocessing software (GDPS) developed in Python, which supports
compiling and running under operating systems such as Windows and Linux.
The main features of this software are as follows:
GDPS provides an open-source Python-based interactive tool on Windows and Linux to
preprocess multi-frequency and multi-system GNSS data, such as GPS, GLONASS, Galileo,
BDS, QZSS, IRNSS, and SBAS.
GDPS supports format translation on different versions of RINEX 2.11~4.01 data files, such
as observation data, broadcast ephemerides, and meteorological data.
GDPS supports editing processing based on RINEX data, including data segmentation, splicing,
and extraction modules, to modify the required data record contents.
GDPS supports quality checking analysis of multi-GNSS data in terms of carrier-to-noise-
density ratio, ionospheric delay rate, pseudorange/carrier phase multipath, pseudorange/carrier
phase observation noise, data integrity/saturation rate, and single point positioning.
2
2 Software requirements
2.1 Environmental requirements
The executable program in the package is built by Pycharm 2019 and Python 3.7 with
open-source, cross-platform compilation tools on Windows 10. Computer configuration
requirements are as follows:
Operating systems: Windows or Linux
System type: 64-bit
Memory: at least 512MB
Hard disk space: at least 500MB
2.2 Software license
GDPS is an open-source software governed by the GNU General Public License (version
3) (https://www.gnu.org/licenses/gpl-3.0.html). Users can redistribute or modify it under the
terms of the GNU General Public License published by the Free Software Foundation.
3
3 Software installation
After downloading the GDPS package and ensuring the necessary tools (such as Python
3.7 and Pycharm 2019) are available, please follow the steps below to compile the software.
Step 1: Uncompress the GDPS.zip file, then get three folders (i.e. \data, \doc, and \src). "\src"
represents the source code and its directory structure is shown in Fig. 1.
Fig. 1 "\src" folder directory structure
Step 2: Execute the installation command (pip install -r requirements.txt) through the console.
Fig. 2 shows the input in the Windows environment.
Fig. 2 Installation package list
Step 3: Create a project in Pycharm and run GDPS.py. Fig. 3 displays the software interface.
4
Fig. 3 GDPS main interface
5
4 Software and tools instructions
GDPS software mainly includes four functional modules: format translation, data
editing, quality checking, and auxiliary tools, as shown in Fig.4.
GDPS
Format
translation
module
Data
editing
module
Quality
checking
module
Data
segmentation
module
Data
preparation
Data
proecessing
Quality
results
Data
splicing
module
Data
extraction
module
Auxiliary tools
Online PPP
service access
module
Coordinate
transformation
module
Time
transformation
module
Core module 1 Core module 2 Core module 3
Core module 4
Broadcast
ephemerides
Observation
data
Meterology
data
Fig. 4 Software functional modules
4.1 Format translation
The format translation module realizes the conversion of GNSS data between RINEX 2.11
and 4.01 versions. According to the file type classification, this module deals with observation
data, ephemerides, and meteorological data. Users import the input file, select the
corresponding RINEX version, and set the output path. Finally, click "Execute" to execute the
conversion task.
Fig. 5 Format translation module interface
Due to differences in observation code among different versions of RINEX, it is necessary
first to determine the priority of observation encoding. Table 1 shows the priority relationship
of the observation code for GDPS software.
6
Table 1 Priority relationship of observation code
S
ystem
B
and
ype
priority order
GPS
L1
C
C S L X
P
P W Y M
L / D / S
P W C S L X Y M N
L2
C
C D S L X
P
P W Y M
L / D / S
P W C D S L X Y M N
L5
C / L / D / S
I Q X
GLONASS
G1
C
C
P
P
L / D / S
P C
G2
C
C
P
P
L / D / S
P C
G3
C / L / D / S
I Q X
Galileo
E1
C / L / D / S
B C X Z A
E5a
C / L / D / S
I Q X
E5b
C / L / D / S
I Q X
E5(E5a+E5b)
C / L / D / S
I Q X
E6
C / L / D / S
B C X Z A
BDS
B1
C / L / D / S
I Q X
B2/B2b
C / L /
D / S
I Q X D P Z
B3/B3A
C / L / D / S
I Q X D P Z
SBAS
L1
C / L / D / S
C
L5
C / L / D / S
I Q X
4.2 Data editing
Due to the specific needs of different users, some data record contents need to be modified.
The data editing module is concerned with data segmentation, splicing, and extraction to assist
users in editing the file structure of observation data. Among them, data splitting is to cut the
data of the whole observation period into several periods; data extraction is to access
observation values according to the information of frequency code, satellite system, pseudo-
random code, sampling interval, and observation duration; and data splicing is to merge several
periods into one data.
7
Fig. 6 Data editing module interface
4.3 Quality checking
The quality of observation data is the guarantee of subsequent high-quality positioning
services. The quality checking module aims to achieve the calculation and visual analysis of
the observation data quality checking indexes. The quality checking results include summary
information, carrier-to-noise ratio, ionospheric delay rate, pseudorange/carrier phase multipath,
pseudorange/carrier phase noise, data integrity/saturation rate, and single point positioning.
Fig. 7 Quality checking module interface
4.4 Auxiliary tools
GDPS provides some auxiliary tools to improve the efficiency of data processing and
8
result analysis. The auxiliary tool module mainly includes functions such as PPP service,
coordinate transformation, and time transformation. The PPP service module provides several
popular online PPP service interfaces, such as APPS, AUSPOS, CSRS-PPP, GAPS,
magicGNSS, Net _ Diff, OPUS, and RTX-PP. The coordinate transformation module supports
coordinate transformation between XYZ, NEU, and BLH in batch processing mode. The time
transformation module provides the conversion function of the year/month/day/minute/second
format to the Julian day, simplified Julian day, Day of Year (DOY), GPS week day and week
second, and BDS week day and week second.
Fig. 8 Auxiliary tools module interface
9
5 Software operation
5.1 Format translation operation
In the format translation module, users can convert the corresponding version from 3.05
to 2.11, convert the satellite system from multi-GNSS to GPS, GLONASS, Galileo, and SBAS
systems, and convert the observation encoding type from a separate system to an integrated
encoding.
Fig. 9 Format translation demonstration
5.2 Data editing operation
In the data editing module, users need to batch import multiple sets of observation data to
be merged and then click the "Execute" button to perform data merging.
1
2
15 minutes
30 minutes
Fig. 10 Data editing demonstration
5.3 Quality checking operation
After importing observation data, broadcast ephemerides, and setting parameters, the
10
software automatically generates a configuration file to start quality inspection calculation. The
output results include summary information, carrier-to-noise ratio, ionospheric delay rate,
pseudorange/carrier phase multipath, pseudorange/carrier phase noise, data integrity/saturation
rate, and single point positioning.
Fig. 11 Quality checking demonstration
Table 2 Output file types
File suffix name File type
azi azimuth
ele elevation
pnoise pseudorange noise
lnoise carrier phase noise
cycleslip cycle slip marker
clkjump clock jump marker
inte data integrity rate
satu data saturation rate
cnr carrier-to-noise-density ratio
iod ionospheric delay rate
pmp pseudorange multipath
lmp carrier phase multipath
vis visible satellite markers
pos single point positioning
list output file list
sat satellite list
sum summary information
11
Fig. 12 position information file
Fig. 13 azimuth file
12
Fig. 14 C/N0 file
Fig. 15 Carrier-to-noise ratio at different frequencies for two systems
Fig. 16 Pseudorange multipath variation at different frequencies for two systems
13
Fig. 17 Pseudorange observation noise sequences at different frequencies for two systems
Fig. 18 Ionospheric delay rate at different frequencies for two systems
Fig. 19 Single point positioning results for two systems
14
Fig. 20 Number of visible satellites and DOP for two systems
Fig. 21 Statistics result of data integrity and saturation rate for two systems
Fig. 22 Sky view of all satellites for two systems
15
Fig. 23 Observation sequences of all satellites for two systems
16
6 Mathematical methods
The basic undifferenced observations of the original pseudorange and phase can be given
as follows:
, , , ,
, , , , ,
s s s s s s s s
r i r i r i i r r i i r i
s s s s s s s s s s
r i r i r i i r i i
s
r
s
r i r i r i
r
P c t t I Mw b b
c t t I MwL B B
ZWD c
ZWD N c
(1)
where s denotes a specific satellite; r denotes receiver;
s
r
denotes the satellite-to
receiver range (m); c denotes light velocity (m/s)
r
t
and
s
t
denote receiver and satellite
clock offsets (s), respectively;
s
r
M w
and
r
ZWD
denote the wet mapping function and the
zenith troposphere wet delay, respectively;
s
i
denotes the frequency correlation coefficient
(
2 2
1
s
i i
f f
);
,
s
r i
I
denotes the slant ionospheric delay (m);
s
i
and
,
s
r i
N
denote the
wavelength and the integer phase ambiguity, respectively;
s
r i
b
and
s
i
b
denote the frequency-
dependent receiver and satellite code biases, respectively (s);
,
s
r i
B
and
s
i
B
denote the
frequency-dependent receiver and satellite phase biases, respectively (s);
,
s
r i
and
,
s
r i
denote
the sum of measurement noise and other unmodeled error for pseudorange and phase
observations, respectively.
6.1 Pseudorange gross error detection
The commonly used pseudorange observations are P
1
, P
2
,
and C
1
codes. By using
differential methods, then construct the following pseudorange gross error test quantity:
1 1 1 1 1 1 1 1
1 1 1 1 ,
s
C P r C P C P C P
dC P C P DCB DCB S
(2)
1 2 1 2 1 2 1 2
1 2 1 2 ,
s
PP r P P P P ion P P
dPP P P DCB DCB S d
(3)
where
1 1
s
CP
DCB
,
1 2
s
PP
DCB
,
1 2
,
r PP
DCB
and
1 1
,
r CP
DCB
denote the receiver and satellite
differential code bias, respectively;
1 1
C P
S
and
1 2
P P
S
denote the time variable of differential
code bias;
ion
d
denotes the ionospheric delay residual error term between two frequencies;
1 1
C P
and
1 2
P P
denote the remaining error of combination. The combined detection quantity
of
1 1
dC P
and
1 2
dP P
is detected:
0 1 1 1 1 1 2
1 1 1 1 1 1 2
: and
: and
H normal dC P k dP P k
H abnormality dC P k dP P k
(4)
where k
1
and k
2
denote the test threshold. Generally, k
1
and k
2
are 30m and 60m.
6.2 Cycle slip detection
6.2.1 MW combination
The Melbourne-Wunnema (MW) combination is the difference between the wide-lane
phase and narrow-lane pseudorange combination, and its expression is:
,
MW W
, , ,i j i j
i j i j
s s s s
r i r j r i r j
W
f f f f
L
P
N
f
L
f f
L P
f
(5)
where
s
i
f
and
s
j
f
denote the signal frequency;
W
denote
j
W i
fc
f
.
When there is no cycle slip, the value of N
W
has no significant difference. Therefore, the
17
cycle slip test quantity is constructed as follows:
MW
W
W
L
N
(6)
The average wide-lane ambiguity and root mean square at each epoch are calculated
according to the recursive formula:
1
( ) ( 1) ( ) ( 1)
W W W W
N i N i N i N i
i
(7)
2
2 2 2
1
( ) ( 1) ( ) ( 1) ( 1)
W W
i i N i N i i
i
(8)
where
( )
w
N i
denotes the average value of wide lane ambiguity;
2
( )
i
denotes the
variance.
If Eq. (9) is satisfied, cycle slips occur; gross errors occur if Eq. (10) is satisfied. Take the
previous i-1 epochs as a segment, record its value of
w
( 1)
N i
and variance of
( 1)
i
for
subsequent processing, and divide it into a new segment from the epoch
i
.
w w
w w
( ) ( 1) 4 ( 1)
( ) ( 1) 1
N i N i i
N i N i
(9)
w w
w w
( ) ( 1) 4 ( 1)
( ) ( 1) 1
N i N i i
N i N i
(10)
6.2.2 GF combination
The linear combination of Geometry-Free (GF) is defined by the following equation:
, , , , , , ,
s s s s s s s s s s s
r ij r i r j r r i r r j i r i j r j
G
e
F L L N I IN
(11)
where e denotes the carrier phase combination observation noise. The detection
expression is as follows:
, , max
1
s s
r ij r ij GF
GF t GF t k I
(12)
where k denotes 4;
max
I
denotes 0.4m/h.
6.3 Clock jump detection and repair
The deviation between the receiver and the satellite clock accumulates over time. To
maintain synchronization, it is necessary to insert clock jumps into the receiver clock. Therefore,
it is essential to detect and repair clock jumps by using the difference method between adjacent
observation epochs:
, , ,
, , ,
1
1
s s s
r i r i r i
s s s
r i r i r i
P P P
L
t t t
tL Lt t
(13)
where t denotes epoch. Construct the detection quantity and its conditional equation:
, ,
1
0.001
s s s
r i r i
s
T t t t
T
P
t k
L
c
(14)
where k
1
denotes the detection threshold. For epoch t, only when all satellites satisfy the
test condition Eq. (14), it is considered that the clock jump occurs in this epoch or all satellites
have a large cycle slip, then use Eq. (15) to calculate the clock jump candidate, and Eq. (16) to
determine the actual clock jump J.
18
1
/
n
s
s
m T n c
(15)
2
2
int , int
0, int
m m m k
J
m m k
(16)
where α denotes the coefficient factor; k
2
denotes the threshold.
After detecting and calculating J, the clock jump can be repaired in reverse. The
corresponding calculation expression is:
, , max
1
s s
r ij r ij GF
GF t GF t k I
,
,
/
s
s
r i
r i
t t J cL L
(17)
where
,
s
r i
L
t
denotes the observations of the repaired carrier phase.
6.4 Data integrity rate
The data integrity rate is one of the essential indicators to measure the availability and
completeness of receiver observation files. It mainly tests the number of lost observation epochs,
reflecting the performance of receiver data reception and the impact of the surrounding
environment on data reception. The data integrity rate is the ratio of actual epoch numbers with
pseudorange and carrier phase values at the i frequency of satellite s to the theoretical number.
Its expression is:
,
1 1
,
/
s s
i R
n
s s
i T
n
ratio
N N
(18)
where n denotes the number of all visible satellites within a certain period of time;
,
s
i R
N
and
,
s
i T
N
denote the actual received data and the theoretical received data, respectively.
6.5 Data saturation rate
The data saturation rate is the minimum to maximum data amount ratio in different data
types (pseudorange and carrier phase observations). Its expression is:
, ,
min / max
s s
i PL i PL
N N
(19)
where
,
s
i PL
N
denotes the number of observations of various types on the i frequency of
satellite s.
6.6 Pseudorange multipath
Pseudorange multipath is related to the station environment. When dual-frequency
observations are available, a combination of single-frequency pseudorange and dual-frequency
carrier phase observations calculates pseudorange multipath as follows:
2 2 2
2 2 2 2
2
,, , ,
2
2
2 2 2
,
2
, , ,
2
2
i
i j i j
i j
i
j j
s s s s
r i r i r i r j
s s s s
r j r j r i r j
i j i j
f f f
PMP P L L
f f f f
f f
f
PMP P L L
f f f f
(20)
where
,
s
r i
PMP
and
,
s
r j
PMP
denote the computational amount including multipath error
and integer ambiguity on the i and j frequencies, respectively.
For the epoch intervals with continuous observation and no cycle slips, the integer
ambiguity is a constant, and the pseudorange multipath error can be calculated by Eq. (21).
,
, ,
s
s s
r i
r i r i
PMP PMP PMP
(21)
19
where
denotes smoothing in the time domain.
6.7 Carrier phase multipath
Some satellite systems provide three-frequency and above carrier phase observations,
using two dual-frequency ionosphere-free combinations to calculate carrier phase multipath;
the corresponding expression is:
2
2 2 2
2 2 2
, , , , , ,
2 2 2
,
2 2
,
, ,
, , , ,
s s s s s s s s
r r i r j r k r i r j r i r k
j
s s s
i i k
r i r j r k
i j i k i j i k
LMP L L L IF L L IF L L
f
f f f
L L L
f f f f f f f f
(22)
6.8 Ionospheric delay rate
The ionospheric delay rate refers to the change in ionospheric delay per unit of time. When
dual-frequency observations are available, the ionospheric delay rate can be calculated by using
the difference method between adjacent epochs expressed as follows:
2
, ,
, ,
2
2 2
2
2
j
s s
r i r j
s s
i
i j
i
j
r r j
i j
i
f
I L L
f f
f
I L L
f f
(23)
1
1
1
1
k ii k
i
k
j k
j
k
k j
k k
I t I t
IOD
t t
I t I t
IOD
t t
(24)
where IOD
i
and IOD
j
denote the ionosphere delay rate on the i and j frequencies,
respectively.
6.9 Carrier-to-noise ratio
The carrier-to-noise ratio value (C/N0) is the ratio between signal strength and noise. It is
mainly affected by the antenna gain parameter, the state of the correlator in the receiver, and
the multipath effect. C/N0 can be obtained directly from the station's original observation data.
The lower the value of C/N0, the higher the noise intensity and the worse the signal quality.
6.10 Pseudorange observation noise
Pseudorange observation noise not only reflects the quality of the satellite signal but also
reflects the overall performance of the receiver. The pseudorange noise is calculated using the
difference method between adjacent epochs, and its expression is:
1 2 3
, , , , ,
3 3
k k k
s s s s s
r i r i r i r ki kr i
P t P t P t P t P t
(25)
2
1
,
1
1 1
20
j
i
n N
P
j
r
k
P k
n N
(26)
where n denotes the number of satellites; N denotes the number of observations;
P
denotes the estimation of pseudorange observation noise.
6.11 Carrier phase observation noise
Similar to pseudorange noise calculation, the carrier phase noise is calculated using the
difference method between adjacent epochs, and its expression is:
1 2 3
, , , , ,
3 3
k k k
s s s s s
r i r i r i r ki kr i
L t L t L t L t L t
(27)
20
2
1
,
1
1 1
20
j
i
n N
L
j
r
k
L k
n N
(28)
where
L
denotes the estimation of carrier phase observation noise.
6.12 Dilution of precision
The Dilution of Precision (DOP) reflects the positioning performance and the satellite's
spatial distribution status. The smaller the DOP value, the better the spatial geometric
distribution of the observation satellites and the smaller the positioning error, and its expression
is:
1 1 1 1 1
2 2 2 2 2
cos sin cos cos sin 1
cos sin cos cos sin 1
cos sin cos cos sin 1
n n n n n
E A E A E
E A E A E
G
E A E A E
(29)
1
XX XY XZ XT
YX YY YZ YT
T
ZX ZY ZZ ZT
TX TY TZ TT
q q q q
q q q q
Q G G
q q q q
q q q q
(30)
XX YY ZZ TT
GDOP
q q q q
(31)
XX YY ZZ
P O q
D P q q
(32)
where A
i
denotes the the satellite azimuth; E
i
denotes the satellite elevation; n denotes the
number of satellites; G denotes observation matrix; Q denotes cofactor matrix; GDOP denotes
geometric dilution precision; PDOP denotes position dilution precision.
21
Acknowledgement
Thank Mr. Tim Everett for the open-source rtklib-py program, which has provided us with
reference and inspiration.